package work.thread_eg.concurrent.synchronized_eg;


import java.util.concurrent.TimeUnit;

/**
 * synchronized也是可重入锁
 *
 */
public class SynchronizedTest04 {

    synchronized void m1() {
        for(int i= 0 ; i<10; i++) {
            try {
                TimeUnit.SECONDS.sleep(1);
            }catch (InterruptedException ex) {
                ex.printStackTrace();
            }
            System.out.println(i);
        }
    }

    synchronized void m2() {
        System.out.println("m2 ...");
    }

    public static void main(String[] args) {
        SynchronizedTest04 t1 = new SynchronizedTest04();
        new Thread(t1::m1).start();
        try {
            TimeUnit.SECONDS.sleep(1);
        }catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        // m1 和 m2都是synchronized方法 持有的是同一把锁 m2会等待m1执行完再执行
        new Thread(t1::m2).start();
    }
}
